/**
 * @项目名称: lession01
 * @文件名称: Demo2.java
 * @Date: 2016年9月20日
 * @Copyright: 2016 www.yunhe.cn Inc. All rights reserved.
 * 注意：本内容仅限于云和数据公司内部传阅，禁止外泄以及用于其他的商业目的
*/
package com.thinkgem.redis;

import org.apache.log4j.Logger;
import org.junit.Test;
import redis.clients.jedis.Jedis;

/**
 * 主要演示JEDIS连接打开关闭
 * 判断连接是否存在等
 * 
 * @author ZSL
 *
 */
public class Demo2 {

	/**
	 *日志工具 
	 */
	Logger logger = Logger.getLogger(Demo2.class);
	
	/**
	 * 简单连接演示例子
	 */
	@Test
	public void simpleConn(){
		//定义REDIS服务器IP地址
		String host = "127.0.0.1";
		//定义REDIS服务器端口号
		int port = 6379;
		//实例化JEDIS对象，传入地址和端口
		Jedis client = new Jedis(host, port);
		//打印输出
		logger.debug("初始化client实例对象后，client的TCP SOCKET连接，是否已经打开:"+client.isConnected());
		//JEDIS CLIENT实例开启连接
		client.connect();
		//打印输出
		logger.debug("client调用connect后，client的TCP SOCKET连接，是否已经打开:"+client.isConnected());
		//JEDIS CLIENT实例断开连接
		client.disconnect();
		//打印输出
		logger.debug("client调用disconnect后，client的TCP SOCKET连接，是否已经打开:"+client.isConnected());
		//client警告必须close(关闭最好调用close方法)
		client.close();
	}

	
	/**
	 * 演示quit指令
	 * (
	 * 客户端发送quit指令，客户端和服务器端保持的TCP SOCKET连接不会马上断开，
	 * 当quit指令到达服务，服务完全处理完本次链路的业务，服务器会自动断开和客户端
	 * 的连接，注意：此时客户端JEDIS保持的连接，JEDIS仍视为连接正常可用，实际呢，
	 * 服务器已经断开，此TCP连接已经被重置RESET了，是不可用连接。如果此时，再去
	 * 拿此TCP SOCKET连接去发送指令执行业务，代码会抛出RESET网络异常
	 * )
	 */
	@Test
	public void quitConn(){
		//定义REDIS服务器IP地址
		String host = "127.0.0.1";
		//定义REDIS服务器端口号
		int port = 6379;
		//实例化JEDIS对象，传入地址和端口
		Jedis client = new Jedis(host, port);
		//打印输出
		logger.debug("初始化client实例对象后，client的TCP SOCKET连接，是否已经打开:"+client.isConnected());
		//JEDIS CLIENT实例开启连接
		client.connect();
		//打印输出
		logger.debug("client调用connect后，client的TCP SOCKET连接，是否已经打开:"+client.isConnected());
		//JEDIS CLIENT实例发送quit客户端退出指令
		client.quit();
		//打印输出(此时判断连接是否打开，返回的是true)
		logger.debug("client调用quit后，client的TCP SOCKET连接，是否已经打开:"+client.isConnected());
		//捕获可能出的运行时异常
		try{
			//打印输出某个KEY值
			logger.debug("输出打印KEY-【user:1001:username】的值："+client.get("user:1001:username"));
		}catch(Exception ex){
			ex.printStackTrace();
		}
		
		//client警告必须close(关闭最好调用close方法)
		client.close();
		//打印输出某个KEY值
		logger.debug("输出打印KEY-【user:1001:username】的值："+client.get("user:1001:username"));
	}
	
}
